The property of
object-oriented programming languages where
the code executed to perform a given operation is determined
at
run time from the
class of the operand(s) (the receiver
of the message). There may be several different classes of
objects which can receive a given message. An expression may
denote an object which may have more than one possible class
and that class can only be determined at run time. New
classes may be created that can receive a particular message,
without changing (or recompiling) the code which sends the
message. An class may be created that can receive any set of
existing messages.
C++ implements
dynamic binding using "{virtual member
functions}".
One important reason for having
dynamic binding is that it
provides a mechanism for selecting between alternatives which
is arguably more robust than explicit selection by
conditionals or
pattern matching. When a new
subclass is
added, or an existing subclass changes, the necessary
modifications are localised: you don't have incomplete
conditionals and broken patterns scattered all over the
program.
See
overloading.